package mine.code.question.动态规划;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * 给定一个非负索引 rowIndex，返回「杨辉三角」的第 rowIndex 行。
 * <p>
 * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
 *
 * @author caijinnan
 */
public class 杨辉三角II {


    @Test
    public void run() {
        System.out.println(getRow(3));
    }

    public List<Integer> getRow(int rowIndex) {
        List<List<Integer>> result = new ArrayList<>();
        for (int i = 1; i <= rowIndex+1; i++) {
            List<Integer> temp = new ArrayList<>();
            if (i == 1) {
                temp.add(1);
                result.add(temp);
                continue;
            }
            List<Integer> lastInteger = result.get(result.size() - 1);
            temp.add(lastInteger.get(0));
            for (int x = 0; x <= i - 3; x++) {
                temp.add(lastInteger.get(x) + lastInteger.get(x + 1));
            }
            int size = lastInteger.size();
            temp.add(lastInteger.get(size - 1));
            result.add(temp);
        }
        return result.get(rowIndex );
    }
}
